<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>

//【示例1】遵循一般惯性思维，在检测这些条件时，常会沿用下面这种嵌套结构：
if(a){
    if(b){
        if(c){
            if(d){
                alert("所有条件都成立！");
            }
            else{
                alert("条件d不成立！");
            }
        }
        else{
            alert("条件c不成立！");
        }
    }
    else{
        alert("条件b不成立！");
    }
}
else{
    alert("条件a不成立！");
}
//【示例2】上述设计思维没有错误，结构嵌套合法。但是，用户可以使用下面if结构进行优化处理：
if(a && b && c && d){
    alert("所有条件都成立！");
}
//【示例3】可以采用排除法，对每个条件逐一进行排除，如果全部成立则再执行特定任务。这里使用了一个布尔型变量作为钩子把每个if条件结构串在一起。具体代码如下：
var t = true; 					// 初始化行为变量为true
if(!a){
    alert("条件a不成立！");
    t = false; 					// 如果条件a不成立则行为变量为false
}
if(!b){
    alert("条件b不成立！");
    t = false; 					// 如果条件b不成立则行为变量为false
}
if(!c){
    alert("条件c不成立！");
    t = false; 					// 如果条件c不成立则行为变量为false
}
if(!d){
    alert("条件d不成立！");
    t = false; 					// 如果条件d不成立则行为变量为false
}
if(t){ 							// 如果行为变量为true，则执行特定事件
    alert("所有条件都成立！");
}

if(a = 1){ 						// 错误的比较运算
    alert(a);
}


if(1 == a){ 					// 预防赋值运算的好方法
    alert(a);
}

var a=2; 						// 声明变量并赋值
if(1 == a); 					// 误在条件表达式后附加分号
{
    alert(a); 					// 但是依然能够被执行的复句
}

var a=2; 						// 声明变量并赋值
if(1 == a)
    ; 							// 条件成立时将执行空语句
{
    alert(a); 					// 独立于条件结构的复合语句
}

var a=2; 						// 声明变量并赋值
if(1 == a){ 					// 就不会再添加分号表示一行结束了
    alert(a); 
}




</script>
</head>
<body>




</body>
</html>
